package com.acmen.easyapi.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;

/**
 * 请求参数注解说明
 *
 * @Author acmen
 */
@Target({FIELD, PARAMETER, TYPE, METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Param(label = "")
public @interface ReqParam {
    @AliasFor(annotation = Param.class)
    String label();//参数标签
    String requiredGroup() default "";//多个参数名必需要其中一个不为空的一个组
    boolean required() default false;//必需录入
    int maxLength() default 0;//参数名大长度，缺省为255
    long max() default Long.MAX_VALUE;//最大值
    long min() default -Long.MAX_VALUE;//最小值
    @AliasFor(annotation = Param.class)
    String validateExp() default "";//校验类型
    @AliasFor(annotation = Param.class)
    String example() default "";//样例
    @AliasFor(annotation = Param.class)
    String testData() default "";//测试数据，支持动态表达
    @AliasFor(annotation = Param.class)
    String note() default "";//参数说明
    @AliasFor(annotation = Param.class)
    Class enumClass()  default Object.class;//枚举类
    @AliasFor(annotation = Param.class)
    String dictType() default "";//字典类型
}

